Digital color halftoning with generalized error diffusion vector green-noise masks

ABSTRACT

Disclosed are two novel techniques for digital color halftoning with green-noise stochastic dither patterns generated by homogeneously distributing minority pixel clusters. The first technique employs error diffusion with output-dependent feedback such that the overlapping of pixels of different colors can be regulated for increased color control. The second technique uses a green-noise mask which is a dither array designed to create green-noise halftone patterns. The green-noise mask is constructed to also regulate the overlapping of different colored pixels. As is the case with monochrome image halftoning, both techniques are tunable, allowing for large clusters in printers with high dot-gain characteristics, and small clusters in printers with low dot-gain characteristics.

This application claims the benefit of Provisional application Ser. No. 60/117,415 filed Jan. 27, 1999.

BACKGROUND OF THE INVENTION

A. Field of the Invention

The present invention relates generally to halftoning of images, and, more particularly to digital color halftoning with generalized error diffusion and vector green-noise masks.

B. Description of the Related Art

Digital halftoning is a technique used by binary display devices to create, within the human eye, the illusion of continuous tone. Designed to mimic analog techniques, dot-clustered ordered dithering or amplitude modulated (AM) halftoning produces this illusion by varying the size of round printed dots which are arranged along an ordered grid. When using AM halftoning, the parameters of particular importance are the lines-per-inch (Ipi), i.e., the number of rows/columns of the regular grid and the screen angle or the orientation of the regular grid relative to the horizontal axis. Typically, monochrome screens have an angle of 45° since the human visual system is least sensitive to diagonal artifacts.

In color printers, the illusion of continuous shades of color is produced by superimposing the binary halftones of cyan, magenta, yellow and black (CMYK) inks. As the dots of an AM halftone form a regular grid, clustered-dot dithering suffers from “moiré”—the secondary interference patterns created by superimposing two or more regular patterns. To minimize the appearance of moiré, the screens of cyan, magenta, yellow and black are typically oriented at the angles of 15°, 75°, 45°, and 0°, creating a pleasant rosette pattern.

The problems of moiré and screen angles are avoided in frequency-modulated halftoning where continuous tone is produced by varying the distance between printed dots and not varying the size. Typically, FM halftones are produced by error diffusion which creates a stochastic arrangement of dots. Besides avoiding moiré, FM halftoning, by isolating minority pixels, maximizes the spatial resolution of the printed image relative to the printer. Unfortunately, this distribution also maximizes the perimeter-to-area ratio of printed dots, making FM halftones more susceptible to printer distortions such as dot-gain, and causing the printer halftone to appear darker than the original ratio of white-to-black pixels. In printers with high dot-gain characteristics, AM halftoning may be the preferred technique, with its lower spatial resolution, moiré, and perimeter-to-area ratio of its clustered-dots.

An alternative to AM and FM halftoning is disclosed in R. Levien, “Output dependent feedback in error diffusion halftoning,” IS&T's Eighth International Congress on Advances in Non-Impact Printing Technologies, pp. 280-282 (1992). Error diffusion with output-dependent feedback is an AM-FM hybrid which creates the illusion of continuous tone by producing a stochastic patterning of dot clusters which vary in both their size and in their separation distance. The major advantage of this technique over prior error diffusion schemes, is that by adjusting a single parameter, the output is tunable, that is, capable of creating halftones with large clusters in printers with high dot-gain characteristics and small clusters in printers with low dot-gain characteristics. Error diffusion with output-dependent feedback, therefore, sacrifices halftone visibility for printer robustness.

In U.S. patent application Ser. No. 09/228,573, filed Jan. 11, 1999, which was based upon provisional Serial No. 60/071,649, filed Jan. 16, 1998, the inventors of the present invention disclosed a technique that creates patterns described in terms of their spectral content as green-noise-containing no low or high frequency spectral components. This green-noise model is presented in accordance with a blue-noise model that describes the spectral characteristics of the ideal error-diffused halftone patterns as having no low-frequency content. Furthermore, just as the spectral characteristics of blue-noise generate the blue-noise mask and a binary dither array reduces the computational complexity associated with FM halftoning, the present inventors, using the spatial and spectral characteristics of green-noise, introduced the green-noise mask.

The problem yet to be addressed in the evolution of green-noise halftoning is its application to color. FM halftoning has been studied in great detail with respect to color printing. The techniques introduced range from simply halftoning each color independently, to complex model-based techniques which transform the CMYK color space to alternate spaces, and even using a blue-noise mask for color halftoning.

SUMMARY OF THE INVENTION

An object of the invention is to address the problems associated with the related art.

A further object is to provide an apparatus capable of digital color halftoning with generalized error diffusion and vector green-noise masks.

Additional objects and advantages of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The objects and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.

To achieve the objects and in accordance with the purpose of the invention, as embodied and broadly described herein, the invention comprises an apparatus and method of color printing using green-noise halftoning, the method comprising the step of: extending error diffusion with output-dependent feedback to cluster pixels of like color and to regulate the clustering of pixels of different colors, wherein the halftoning of different colors is correlated such that the superimposing of different inks is increased or decreased, offering greater control of resulting halftone patterns.

To further achieve the objects, the present invention comprises an apparatus and method of color printing using green-noise halftoning, the method comprising the step of: incorporating a desired correlation between colors to construct a vector green-noise mask, wherein the mask maintains all the desirable attributes of a monochrome mask, such as isotropic and tunable coarseness, while regulating the overlapping of pixels of different colors.

To still further achieve the objects, the present invention comprises an apparatus and method of color printing, comprising the step of: extending error diffusion to regulate the overlapping of different colored pixels, wherein the halftoning of different colors is correlated such that the superimposing of different inks is increased or decreased, offering greater control of the resulting halftone pattern.

To further achieve the objectives, the present invention comprises an apparatus and method of color printing, where {φ_(i,gi): i=1, 2, . . . , C} is an initial set of empty M×N arrays, and C, M and N are integers, the method comprising the steps of: creating a set of M×N arrays, { U₁, U₂, . . . , U_(C)}, of uniformly distributed random numbers such that U_(i)[m, n]∈(0, 1) is the probability that φ_(i,gi) will become a minority pixel; for each pattern φ_(i,gi), where the ratio of the total number of minority pixels to the total number of pixels is less than a gray level g_(i), performing the following substeps: constructing a concentration matrix CM_(i) using a user-defined mapping of, {H_(LP){circle around (x)}φ_(i,gi)}, the output after filtering φ_(i,gi) with the low-pass filter H_(LP) using circular convolution, locating the majority pixel in φ_(i,gi) with the highest modified probability, and replacing that pixel, φ_(i), _(gi)[m, n], with a minority pixel, and given the new minority pixel, φ_(i), _(gi)[m, n], adjusting the probability of each and every majority pixel, φ_(i), _(gi)[o, p] for l=1, 2, . . . , C, such that: (U_(l)[o, p])_(new)=(U_(l)[o, p])_(old)×R_(l, i)(r) where r is the minimum wrap-around distance from the majority pixel φ_(i), _(gi)[o, p] to the new minority pixel φ_(i,gi)[m, n]; and obtaining the desired color dither pattern given by the set {φ_(i,gi): i=1, 2, . . . , C} if for all colors i, the ratio of the total number of minority pixels to the total number of pixels in φ_(i,gi) is equal to g_(i), otherwise, returning to the locating substep.

It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate several embodiments of the invention and together with the description, serve to explain the principles of the invention. In the drawings:

FIG. 1 is a diagram showing a spatial ring used to calculate a pair correlation for a binary dither pattern;

FIG. 2 are graphs showing the pair correlations for white noise (left), blue-noise (center), and green-noise (right) dither patterns;

FIG. 3 is a schematic diagram showing the error diffusion algorithm introduced by Floyd-Steinberg;

FIG. 4 is a schematic diagram showing the error diffusion with output-dependent feedback algorithm introduced by Levien;

FIG. 5 is a schematic diagram showing the generalized error diffusion algorithm in accordance with a preferred embodiment of the present invention;

FIG. 6 are graphs showing the pair correlations for CMYK halftone patterns with no diffusion between colors using Floyd-Steinberg error diffusion weights and no hysteresis (left), Levien diffusion with small hysteresis constant (h=0.5) (center), and Levien diffusion with medium hysteresis constant (h=1.0) (right);

FIG. 7 are graphs showing the pair correlations for CMYK halftone patterns using Levien diffusion with high hysteresis constant (h=1.5) with a negative interference term (S_(i≠i)=−0.2) (left), no interference term (S_(i≠i)=0) (center), and a positive interference term (S_(i≠i)=+0.2) (right);

FIG. 8 is a graph showing a pair correlation shaping function used to construct green-noise;

FIG. 9 is graph showing a mapping function used to construct a concentration matrix from an output after filtering with a low-pass filter using circular convolution;

FIG. 10 is a graph showing a pair correlation shaping functions used to construct color green-noise with decreased overlap of minority pixels of different colors;

FIG. 11 are graphs showing CMYK dither patterns created using a VBIPPCCA algorithm with decreased overlapping (left), uncorrelated overlapping (center), and increased overlapping (right);

FIG. 12 shows CMYK dither patterns created via Floyd-Steinberg error diffusion (a), created via generalized error diffusion (b-f), and created via VBIPPCCA (g-i);

FIG. 13 shows CMYK green-noise masks constructed from VBIPPCCA that minimizes dot overlap (a), has uncorrelated overlap (b), maximizes overlap (c), and maximizes overlap for colors cyan and yellow (d);

FIG. 14 shows CMYK halftoned images of an original color photograph (shown at (a)) using generalized error diffusion (b-d) and vector green-noise masks (e-h);

FIG. 15 is a flow chart showing the steps involved in the VBIPPCCA process; and

FIG. 16 is a schematic diagram showing a computing device capable of use with the methods and processes of the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

Reference will now be made in detail to the present preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.

A. Halftone Statistics

Point process statistics have a long history in stochastic geometry and were recently introduced to digital halftoning by the present inventors for the study of aperiodic dither patterns. In this framework, Φ, is a stochastic model governing the location of points in ². φ, a sample of Φ, is the set {x_(i): i=1, 2, . . . } where x_(i) is a point in ², and the scalar quantity φ(B) represents the number of x₁'s in B, a subset of ². In terms of a monochrome digital halftone pattern, a point is defined to be a minority pixel (a white pixel (1) for gray level 0≦g<½ and a black pixel (0) for ½≦g≦1).

So given I_(g), a binary dither pattern representing a monochrome image of constant gray level g, φ[n]=1 indicates that the pixel I_(g)[n] is a minority pixel, otherwise, φ[n]=0. As a random quantity, the first order moment or the expected value of φ[n] is its intensity I[n], which is the unconditional probability that I_(g)[n] is a minority pixel with I[n]=g for 0≦g≦½ and I[n]=1−g for ½≦g≦1. For a stationary point process where the statistical properties of Φ are independent of n, I[n]=I.

A second metric for characterizing the statistical properties of Φ is the reduced second moment measure K[n;m] defined as: $\begin{matrix} {{K\left\lbrack {n;m} \right\rbrack} = \frac{\left. {{{{E\left( {\Phi \lbrack n\rbrack} \right.}}{\Phi \lbrack m\rbrack}} = 1} \right)}{E\left( {\Phi \lbrack n\rbrack} \right)}} & (1) \end{matrix}$

the ratio of the probability that pixel I_(g)[n] is a minority pixel under the condition that I_(g)[m] is a minority pixel to the unconditional probability that I_(g)[n] is a minority pixel. K[n;m] can be interpreted as a measure of the influence of a minority pixel at m on the pixel I_(g)[n] with K[n;m]>1 indicating that I_(g)[n] is more likely to be a minority pixel given I_(g)[m] and K[n;m]<1 indicating that I_(g)[n] is less likely to be a minority pixel. K[n,m]=1 indicates that I_(g)[m] has no influence on I_(g)[n], and in the case of a dither pattern constructed from uncorrelated (white) noise, K[n;m]=1 for all n and m.

For a stationary point process, K[n;m]=K(r, θ), where r is the distance from m to n and θ is the direction. For an isotropic point process, the statistical properties of Φ are invariant to rotation, and therefore, K(r,θ) for an isotropic process is written as R(r) and is referred to as the pair correlation. R(r) is explicitly defined as: $\begin{matrix} {{R\quad (r)} = \frac{E\quad \left( {\left. {\varphi \quad \left( {R_{m}\quad (r)} \right)} \middle| {\varphi \lbrack m\rbrack} \right. = 1} \right)}{E\quad \left( {\varphi \quad \left( {R_{m}\quad (r)} \right)} \right.}} & (2) \end{matrix}$

the ratio of the expected number of minority pixels located in the ring R_(m)(r)={n:r<|n−m|≦r+dr}, see FIG. 1, under the condition that I_(g)[m] is a minority pixel to the unconditional expected number of minority pixels located in R_(m)(r).

R(r) offers an especially useful tool for characterizing aperiodic dither patterns as illustrated in FIG. 2, where three dither patterns representing gray level g={fraction (15/16)} are shown with their corresponding pair correlations (both the calculated and the ideal). The first pattern (left) is a white-noise dither pattern, and as such has a pair correlation R(r)=1 for all r as the value of any single pixel in I_(g) is independent of all other pixels. The name (white-noise) derives from the fact that the resulting power spectrum remains constant for all frequencies.

The second pattern (center) is composed of blue-noise which represents gray level g by distributing the minority pixels within I_(g) as homogeneously as possible-resulting in a dither pattern where minority pixels are placed, on average, a distance of λ_(b) apart where: $\begin{matrix} {\lambda_{b} = \left\{ \begin{matrix} {{D/\sqrt{g}},{{{for}\quad 0} < g \leq {1/2}}} \\ {{D/\sqrt{\left( {1 - g} \right)}},{{{for}\quad {1/2}} < g \leq 1}} \end{matrix} \right.} & (3) \end{matrix}$

and D is the minimum distance between addressable points on the display. Referred to as the principle wavelength of blue-noise, λ_(b) is illustrated in R(r) as series of peaks at integer multiples of λ_(b). The term “blue-noise” denotes that the spectral components of a blue-noise dither pattern lie almost exclusively in the high (blue) frequency range.

The final pattern (right) is green-noise where gray level g is represented by homogeneously distributed minority pixel clusters. These clusters are separated, center-to-center, by an average distance of λ_(g), the principle wavelength of green-noise, where: $\begin{matrix} {\lambda_{g} = \left\{ \begin{matrix} {{D/\sqrt{g/\overset{\_}{M}}},{{{for}\quad 0} < g \leq {1/2}}} \\ {{D/\sqrt{\left( {1 - g} \right)/\overset{\_}{M}}},{{{for}\quad {1/2}} < g \leq 1}} \end{matrix} \right.} & (4) \end{matrix}$

and {overscore (M)} is the average number of minority pixels per cluster. In R(r), it is the separation of clusters λ_(g) that leads to a series of peaks at integer multiples of λ_(g), and the clustering of minority pixels that leads to a non-zero component for r near zero with R(r)>1 for 0<r<r_(c). The parameter r_(c) is the cluster radius and is related to {overscore (M)} as:

πr ² _(c) ={overscore (M)}  (5)

where πr² _(c) is the area covered by a circle with radius r_(c). Principle wavelength λ_(g) is most apparent in R(r) when the variation in cluster size is small as increasing the variation leads to a “whitened” dither pattern where the peaks and valleys of R(r) become blurred. The term “green” refers to the resulting patterns' predominantly mid-frequency spectral components with the blue-noise model a limiting case ({overscore (M)}=1).

1. Color Halftoning

In the case of a color halftone, the monochrome model I_(g) must be revised as a dither pattern composed of C colors where, for generality, the quantity C is an arbitrary integer. For RGM and CMYK, where images are composed of the additive colors red, green and blue or the subtractive colors cyan, magenta, yellow and black, C=3 and 4, respectively. So for color images, the halftone pattern I_(g) is now composed of the monochrome binary dither patterns I_(g), I_(g2), . . . , I_(gc) where g_(i) is the gray level of pattern I_(gi) and φ_(i) is the corresponding point process.

In this new framework, the quantity K_(i,j)[n;m] is a reduced second moment measure between colors such that: $\begin{matrix} {{K_{i,j}\left\lbrack {n;m} \right\rbrack} = \frac{E\quad \left( {\left. {\varphi_{gi}\lbrack n\rbrack} \middle| {\varphi_{gi}\lbrack m\rbrack} \right. = 1} \right)}{E\quad \left( {\varphi_{gi}\lbrack n\rbrack} \right)}} & (6) \end{matrix}$

is the ratio of the conditional probability that φ_(gi) [n] is a minority pixel given that a minority pixel exists at sample m of φ_(gi) to the unconditional probability that φ_(gi) [n] is a minority pixel. Similar to K[n;m], K_(i,j)[n;m]=1 indicates that the location of minority pixels in colors i and j are uncorrelated. The pair correlation between colors g_(i) and g_(j) follows as: $\begin{matrix} {{R_{i,j}\quad (r)} = \frac{E\quad \left( {\left. {\varphi_{gi}\quad \left( {R_{m}\quad (r)} \right)} \middle| {\varphi_{gi}\lbrack m\rbrack} \right. = 1} \right)}{E\quad \left( {\varphi_{gi}\quad \left( {R_{m}\quad (r)} \right)} \right.}} & (7) \end{matrix}$

the ratio of the expected number of minority pixels of color g_(i) located in the ring R_(m)(r)={n:r<|n−m|≦r+dr} under the condition that φ_(gi) [m] is a minority pixel to the unconditional expected number of minority pixels with color g_(i) located in R_(m)(r).

B. Generalized Error Diffusion

1. Monochrome

In error diffusion (FIG. 3), the output pixel y[n] is determined by adjusting and thresholding the input pixel x[n] such that: $\begin{matrix} {{y\lbrack n\rbrack} = \left\{ \begin{matrix} {1,{{{if}\quad \left( {{x\lbrack n\rbrack} + {x^{e}\lbrack n\rbrack}} \right)} \geq 0}} \\ {0,{else}} \end{matrix}\quad \right.} & (8) \end{matrix}$

where x^(e)[n] is the diffused quantization error accumulated during previous iterations as: $\begin{matrix} {{x^{e}\lbrack n\rbrack} = {\sum\limits_{i = 1}^{M}\quad {b_{i}^{*}\quad {y^{e}\left\lbrack {n - i} \right\rbrack}}}} & (9) \end{matrix}$

with y^(e)[n]=y[n]−(x[n]+x^(e)[n]) and Σ^(M) _(i=1) b_(i)=1. Using vector notation, Equation (9) becomes:

x ^(e) [n]=b ^(T) y ^(e) [n]  (10)

where b=[b₁, b₂, . . . , b_(M)]^(T) and y^(e)[n]=[y^(e)[n−1], y^(e)[n−2], . . . , y^(e)[n−M]]^(T).

As shown in FIG. 4, adding an output-dependent feedback term, to Equation (8) provides: $\begin{matrix} {{y\lbrack n\rbrack} = \left\{ \quad \begin{matrix} {1,{{{if}\quad \left( {{x\lbrack n\rbrack} + {x^{e}\lbrack n\rbrack} + {x^{h}\lbrack n\rbrack}} \right)} \geq 0}} \\ {0,{else}} \end{matrix}\quad \right.} & (11) \end{matrix}$

where x^(h)[n] is the hysteresis or feedback term defined as: $\begin{matrix} {{x^{h}\lbrack n\rbrack} = {h{\sum\limits_{i = 1}^{M}\quad {a_{i}^{*}\quad {y\left\lbrack {n - i} \right\rbrack}}}}} & (12) \end{matrix}$

with Σ^(N) _(i=0) α_(i)=1 and h is an arbitrary constant. Referred to as the hysteresis constant, h acts as a tuning parameter with a larger h value leading to coarser output textures as h increases (h>0) or decreases (h<0) the likelihood of a minority pixel if the previous outputs were also minority pixels. Equation (12) can also be written in vector notation as:

x ^(h) [n]=ha ^(T) y[n]  (13)

where a=[α₁, α₂, . . . , α_(N)]^(T) and y[n]=[y[n−1], y[n−2], . . . , y[n−N]]^(T). The calculation of the parameters y^(e)[n] and x^(e)[n] remains unchanged. The binary output pixel y[n] is determined as: $\begin{matrix} {{y\lbrack n\rbrack} = \left\{ \quad \begin{matrix} {1,{{{if}\quad \left( {{x\lbrack n\rbrack} + {b^{T}{y^{e}\lbrack n\rbrack}} + {h\quad a^{T}{y\lbrack n\rbrack}}} \right)} \geq 0}} \\ {0,{else}} \end{matrix}\quad \right.} & (14) \end{matrix}$

where y^(e)[n]=[y^(e)[n−1], y^(e)[n−2], . . . , y^(e)[n−N]]^(T) such that y^(e)[n]=y[n]−(x[n]+x^(e)[n]) and y[n]=[y[n−1], y[n−2], . . . , y[n−N]]^(T).

2. Color

Now consider the C-channel case where an output pixel is not the binary pixel y[n] but the C-dimensional vector {overscore (y)}[n] such that: $\begin{matrix} {{\overset{\_}{y}\lbrack n\rbrack} = \begin{bmatrix} {y_{1}\lbrack n\rbrack} \\ {y_{2}\lbrack n\rbrack} \\ \vdots \\ {y_{c}\lbrack n\rbrack} \end{bmatrix}} & (15) \end{matrix}$

where y_(i)[n] is the binary output pixel of color i. Assuming all C channels are halftoned independently, the binary output pixel y_(i)[n] is determined as: $\begin{matrix} {{y_{i}\lbrack n\rbrack} = \left\{ \quad \begin{matrix} {1,{{{if}\quad \left( {{x_{i}\lbrack n\rbrack} + {x_{i}^{e}\lbrack n\rbrack} + {x_{i}^{h}\lbrack n\rbrack}} \right)} \geq 0}} \\ {{0,{else}}\quad} \end{matrix}\quad \right.} & (16) \end{matrix}$

where x^(e) _(i) and x^(h) _(i)[n] are the error and hysteresis terms respectively for the i^(th) color. The error term, being a vector, is calculated as: $\begin{matrix} {{x^{e}\lbrack n\rbrack} = {\begin{bmatrix} b^{T_{1}} & 0 & \ldots & 0 \\ 0 & b^{T_{2}} & \ldots & 0 \\ \vdots & \vdots & ⋰ & \vdots \\ 0 & 0 & \ldots & b^{T_{C}} \end{bmatrix}\begin{bmatrix} {y^{e_{1}}\lbrack n\rbrack} \\ {y^{e_{2}}\lbrack n\rbrack} \\ \vdots \\ {y^{e_{C}}\lbrack n\rbrack} \end{bmatrix}}} & (17) \end{matrix}$

where b_(i) are the filter weights regulating the diffusion of error in the i^(th) channel and y^(e) _(i)[n] is the vector [y^(e) _(i)[n−1], y^(e) _(i)[n−2], . . . , y^(e) _(i)[n−N]]^(T) composed exclusively from errors in channel i such that y^(e) _(i)[n]=y_(i)[n]−(x_(i)[n]+x^(e) _(i)[n]). The hysteresis term {overscore (x)}^(h)[n], also a vector, is calculated as: $\begin{matrix} {{{\overset{\_}{x}}^{h}\lbrack n\rbrack} = {{\begin{bmatrix} h_{1} & 0 & \ldots & 0 \\ 0 & h_{2} & \ldots & 0 \\ \vdots & \vdots & ⋰ & \vdots \\ 0 & 0 & \ldots & h_{C} \end{bmatrix}\begin{bmatrix} a_{1} & 0 & \ldots & 0 \\ 0 & a_{2} & \ldots & 0 \\ \vdots & \vdots & ⋰ & \vdots \\ 0 & 0 & \ldots & a_{C} \end{bmatrix}}\begin{bmatrix} {y_{1}\lbrack n\rbrack} \\ {y_{2}\lbrack n\rbrack} \\ \vdots \\ {y_{c}\lbrack n\rbrack} \end{bmatrix}}} & (18) \end{matrix}$

where a_(i) are the filter weights and h_(i) is the hysteresis constant that regulates the diffusion of feedback in the i^(th) channel.

Generalized even further, Equation (17) becomes: $\begin{matrix} {{x^{e}\lbrack n\rbrack} = {\begin{bmatrix} b^{T_{1,1}} & b^{T_{1,2}} & \ldots & b^{T_{1,C}} \\ b^{T_{2,1}} & b^{T_{2,2}} & \ldots & b^{T_{2,C}} \\ \vdots & \vdots & ⋰ & \vdots \\ b^{T_{C,1}} & b^{T_{C,2}} & \ldots & b^{T_{C,C}} \end{bmatrix}\begin{bmatrix} {y^{e_{1}}\lbrack n\rbrack} \\ {y^{e_{2}}\lbrack n\rbrack} \\ \vdots \\ {y^{e_{C}}\lbrack n\rbrack} \end{bmatrix}}} & (19) \end{matrix}$

where quantization error can now be diffused between channels through b_(i,j), the error filter weights which regulate the diffusion of error from channel j to channel i, and Equation (18) becomes: $\begin{matrix} {{{\overset{\_}{x}}^{h}\lbrack n\rbrack} = {{\begin{bmatrix} h_{1,1} & h_{1,2} & \ldots & h_{1,C} \\ h_{2,1} & h_{2,2} & \ldots & h_{2,C} \\ \vdots & \vdots & ⋰ & \vdots \\ h_{C,1} & h_{C,2} & \ldots & h_{C,C} \end{bmatrix}\begin{bmatrix} a_{1,1}^{T} & a_{1,2}^{T} & \ldots & a_{1,C}^{T} \\ a_{2,1}^{T} & a_{2,2}^{T} & \ldots & a_{2,C}^{T} \\ \vdots & \vdots & ⋰ & \vdots \\ a_{C,1}^{T} & a_{C,2}^{T} & \ldots & a_{C,C}^{T} \end{bmatrix}}\begin{bmatrix} {y_{1}\lbrack n\rbrack} \\ {y_{2}\lbrack n\rbrack} \\ \vdots \\ {y_{C}\lbrack n\rbrack} \end{bmatrix}}} & (20) \end{matrix}$

where the previous outputs of channel j can impact all other channels where h_(i,j)≠0 for i≠j as a_(i,j) and h_(i,j) regulate the diffusion of feedback from channel j to i.

Another modification to error diffusion, as shown in FIG. 5, comprises first defining the thresholding function T(·) as: $\begin{matrix} \begin{matrix} {{\overset{\_}{y}\lbrack n\rbrack} = {T\quad \left( {{\overset{\_}{x}\lbrack n\rbrack} + {{\overset{\_}{x}}^{e}\lbrack n\rbrack} + {{\overset{\_}{x}}^{h}\lbrack n\rbrack}} \right)}} \\ {= {T\quad \left( {{\overset{\_}{x}}^{a}\lbrack n\rbrack} \right)}} \end{matrix} & (21) \end{matrix}$

where {overscore (x)}^(u)[n]={overscore (x)}[n]+{overscore (x)}^(e)[n]+{overscore (x)}^(h)[n] is the accumulated input pixel. The C×C interference matrix S is added to Equation (21) as:

{overscore (y)}[n]=T(S {overscore (x)} ^(u) [n])  (22)

such that S_(i,j) is the influence on the thresholding function of color i by the accumulated input of color j. The effect of S_(i,j) is to increase (S_(i,j)>0) or decrease (S_(i,j)<0) the likelihood of a minority pixel at y_(i)[n] based on the likelihood of a minority pixel at y_(j)[n]. Finally, error diffusion is summarized by the generalized error diffusion equation:

{overscore (y)}[n]=T(S({overscore (x)}[n]+By ^(e) [n]+HAY[n])).  (23)

3. Simulations

FIG. 12(a) shows the resulting CMYK dither patters created by halftoning a 96×96 pixel color image of a constant color value {overscore (x)}[n]=[⅞, ⅞, ⅞, ⅞]^(T) using the Floyd-Steinberg error filter weights with no hysteresis and no dependencies between colors. Before halftoning, low-level white-noise (VAR=0.01) was added to the first scan line of the original color image in order to minimize edge effects and also to unsynchronize the resulting dither patterns. Since this configuration involves colors that are halftone exactly the same way and with each color of the original image identical to the other colors, the resulting pattern of each color will also be identical (synchronized) to the other patterns. Therefore, adding a single or even a few lines of low-level noise eliminates this synchronization between colors, and adding several columns of white-noise also minimizes edge effects. Dither patterns created by error diffusion according to the present invention are the result of using a serpentine (left-to-right and right-to-left) raster scan on a continuous-tone image where low-level white-noise has been added to both the edge rows and columns. The halftoned images are then cropped to exclude those same rows and columns.

For a statistical analysis of the resulting dither pattern, FIG. 6 (left) shows four plots labeled cyan, magenta, yellow and black corresponding to the CMYK dither pattern in FIG. 12(a). Shown in the first plot (labeled cyan) is the pair correlation between colors cyan versus cyan (R_(c,c)(r)), cyan versus magenta (R_(c,m)(r)), cyan versus yellow R_(c,y)(r)) and cyan versus black (R_(c,k)(r)). The small diamonds placed along the horizontal axis indicate the principle wavelengths and cluster radii for R_(c,c)(r). As would be expected for a monochrome image, the pair correlation R_(c,c)(r) exhibits blue-noise characteristics as the pair correlation shows: (i) R_(c,c)(r)<1 for r near zero, (ii) a frequent occurrence of the interpoint distance λ_(g), and (iii) a decreasing influence with increasing r. Having no diffusion between colors and zero interference (S=I, the identity matrix), the pair correlation between channels are predominantly flat as minority pixels of color i have no influence on minority pixels of color j. The remaining plots show similar relationships for colors magenta, yellow and black.

Also shown in FIG. 6 (center) are the resulting pair correlations for the CMYK dither pattern shown in FIG. 12(b) where Levien's error diffusion scheme has been implemented with a low hysteresis constant h=0.5, no diffusion between colors, and zero interference. With a low hysteresis constant, this scheme generates blue-noise patterns very similar to that generated using the Floyd-Steinberg filter weights.

FIG. 6 (right) (corresponding to the resulting pair correlations of the CMYK dither pattern shown in FIG. 12(c)) shows Levien's error diffusion scheme with a medium hysteresis constant h=1.0 where the patterns begin to exhibit clustering as the average size of a minority pixel cluster is 1.95 pixels. In each color, the pair correlation exhibits strong green-noise characteristics as each plot shows: (i) clustering as indicated by R_(i,j)(r)≧1 for r≦r_(c)(r_(c)=0.790, (ii) a frequent occurrence of the intercluster distance λ_(g)=3.95 and (iii) a decreasing influence with increasing r. As before with zero influence and no diffusion between colors, the pair correlations between colors remains predominantly flat for all values of r.

The dither patterns of FIG. 7 illustrate the effects of S, the interference matrix, with FIG. 7 (left) (corresponding to the resulting pair correlations of the CMYK dither pattern shown in FIG. 12(d)) showing the case where S is the matrix defined by S_(i,j)=1 for i=j and S_(i,j)=−0.2 for i≠j. In this specific instance, S has the effect of minimizing the superposition of minority pixels of different colors. That is, given that a cyan pixel is very likely to be printed, minority pixels for magenta, yellow and black are less likely to be printed at the same pixel location. This behavior is well illustrated in the pair correlations where R_(i,j)<1 for R_(i,j)>1. For comparison, FIG. 7 (center) (corresponding to the resulting pair correlations of the CMYK dither pattern shown in FIG. 12(e)) shows the case where S is the identity matrix (no interference) with a flat pair correlation between minority pixels of different colors. For further comparison, FIG. 7 (center) (corresponding to the resulting pair correlations of the CMYK dither pattern shown in FIG. 12(f)) shows the case where S is the matrix defined by S_(i,j)=1 for i=j and S_(i,j)+0.2 for i≠j. Here, the effect of S is to increase the superposition of minority pixels, such that a minority pixel of color i with a high likelihood of being printed, makes a minority pixel of any color j more likely.

C. Vector Green-Noise Masks

The green-noise mask is a novel approach to dither array screening where a continuous-tone image is converted to a binary halftone image by performing a pixel-wise comparison between the original and the dither array or mask. Previously, halftoning with green-noise has employed error diffusion-based methods which although are tunable (capable of creating halftone patterns with large clusters for printers with high dot-gain characteristics and small clusters for printers with low dot-gain characteristics) carry a high computational cost. Now through the use of a green-noise mask, halftoning can create a stochastic patterning of dots with adjustable coarseness but with the same computational freedom as ordered-dither halftoning schemes.

As set forth in U.S. patent application Ser. No. 09/228,573 for monochrome images, the disclosure of which is herein incorporated by reference, the green-noise mask is defined by the set, {φ_(g): 0≦g≦1}, of M×N binary green-noise dither patterns with one pattern, φ_(g), corresponding to each possible discrete gray level g (256 patterns for 8-bit gray-scale images). This set satisfies the stacking constraint that for any two gray-levels k and g with k<g, φ_(k)⊂φ_(g)(if φ_(k)[m, n]=1, then φ_(g)[m, n]=1). As a consequence, a pixel of the M×N dither array or mask DA[m, n ] is defined simply as the minimum g of which φ_(g)[m, n]=1. The size parameters {overscore (M)} and N are arbitrary integers with larger masks constructed by tiling edge-to-edge the original M×N mask such that the output pixel, y[m, n], after halftoning the input pixel, x[m, n], is defined as:

y[m, n]=T(x[m, n]=DA[mod_(M)(m), mod_(N)(n)])  (24)

where T is the thresholding function of Equation (21).

For color halftoning, the vector green-noise mask is defined by the set {φ_(c, g): c=1, 2, . . . , C and 0<g<1}, where φ_(c, g) is the binary green-noise dither pattern for color c and intensity level g (for 24-bit RGB color this corresponds to 256 patterns per channel or 3×256 total patterns). Like the monochrome set, this set must also satisfy the stacking constraint but only within a given color such that φ_(c, g)[m, n]=1 if φ_(c, k)[m, n]=1 for color c and intensity levels k and g with k<g. A pixel, {overscore (D)}A[m, n], of the vector green-nosie mask is therefore defined as: $\begin{matrix} {{\overset{\_}{D}\quad {A\left\lbrack {m,n} \right\rbrack}} = \begin{bmatrix} {\min \left\{ {{g:{\varphi_{1,g}\left\lbrack {m,n} \right\rbrack}} = 1} \right\}} \\ {\min \left\{ {{g:{\varphi_{1,g}\left\lbrack {m,n} \right\rbrack}} = 1} \right\}} \\ \vdots \\ {\min \left\{ {{g:{\varphi_{1,g}\left\lbrack {m,n} \right\rbrack}} = 1} \right\}} \end{bmatrix}} & (25) \end{matrix}$

where the output after halftoning is defined by:

 {overscore (y)}[m, n]=T({overscore (x)}[m, n]−{overscore (D)}A[mod_(M)(m), mod_(N)(n)])  (26)

1. Monochrome BIPPCCA

The physical construction of binary dither patterns for the monochrome green-noise mask is done through Binary Pattern Pari Correlation Construction Algorithm (“BIPPCCA”). The basic premise of BIPPCCA is to take an empty array (containing no minority pixels), and assign to each element a probability of that element becoming a minority pixel. BIPPCCA then converts the most likely elements to minority pixels, one at a time, until the ratio of black to white pixels is g, the desired gray level. The most likely element is the majority pixel with the highest probability during the current iteration. In order for the resulting dither pattern to have the desired statistical properties (i.e., a desired pair correlation), BIPPCCA adjusts, at each iteration, the probability of each majority pixel in the array according to the current set of minority pixels.

In BIPPCCA, the initial assignment of probabilities is done in an uncorrelated manner, but as each new minority pixel is added, the probabilities of all neighboring majority pixels are adjusted according to the desired pair correlation of the resulting pattern. As R (r) is a function of the radial distance between pixels, a majority pixel's probability is increased if its radial distance from the newest minority pixel r corresponds to R(r)>1 and decreased if r corresponds to R(r)<1. As an example, consider using BIPPCCA to construct a blue-noise pattern where the pair correlation is zero for r near zero. This feature of R(r) is achieved in BIPPCCA if for each new minority pixel, the probability of every element directly adjacent thereto is set to zero, and as R(r) has a peak at blue-noise principle wavelength λ_(b), all elements a distance λ_(b) from each new minority pixel are increased to ensure a peak exists in the pair correlation of the final pattern.

In BIPPCCA, how much to increase or decrease a given probability is defined according to pair correlation shaping function R(r). R(r) is a user-defined function based on the desired pair correlation. FIG. 8 shows the shaping function used by the present inventors to construct green-noise dither patterns. This function has peaks at integer multiples of the green-noise principle wavelength λ_(g), and valleys halfway between. The parameter G is a tuning parameter that creates visually pleasing patterns when G=1.1. Being piecewise linear, this pair correlation shaping function is an especially simple approximation of the pair correlation of the ideal green-noise pattern for a given gray level and cluster size, but when used alone the resulting dither patterns tend to look noisy and non-stationary.

Because stationarity is a necessary property for digital halftoning, the most likely pixel will no longer be the majority pixel with the highest probability, but instead be the majority pixel with the highest product U[m, n]×CM[m, n]. U[m, n] is the probability of a given pixel, and CM[m, n] is a function of the density of minority pixels within the surrounding area. Referred to as the concentration matrix, CM makes majority pixels more likely to become minority pixels in areas of low minority pixel concentration and less likely in areas of high minority pixel concentration.

In BIPPCCA, the concentration of minority pixels is measured as the output after applying a low-pass filter, H_(LP), using circular convolution. In U.S. patent application Ser. No. 09/228,573, the present inventors construct green-noise patterns using the Gaussian filter, H_(LP), defined as: $\begin{matrix} {{H_{LP}\quad (r)} = {\exp \quad \left( {- \frac{r^{2}}{\lambda^{2_{g}}}} \right)}} & (27) \end{matrix}$

where H_(LP), has a wide-spread impulse response for large λ_(g), clusters are far apart, and a narrow-spread impulse response for small λ_(g), where clusters are close together. The user then determines the increase or decrease in a probability according to the minority pixel concentration by mapping the filtered output to the concentration matrix. FIG. 9 shows the mapping of concentration values used in Ser. No. 09/228,573 to determine CM, where {H_(LP){circle around (x)}φ_(g)} represents the output after filtering the binary dither pattern of the current iteration, φ_(g) with the low-pass filter H_(LP). In this mapping, values of {H_(LP){circle around (x)}φ_(g)} are scaled in a linear fashion such that max {H_(LP){circle around (x)}φ_(g)}→0 and min {H_(LP) {circle around (x)} φ_(g)}→1.

In summary, the steps for monochrome BIPPCCA are performed as follows where φ_(g) is initially an M×N array with no minority pixels:

Step 1: Create an M×Narray, U, of uniformly distributed random numbers such that U[m, n]∈[0, 1] is the probability that φ_(g)[m, n] will become a minority pixel.

Step 2: Construct the concentration matrix CM using a user-defined mapping of {H_(LP){circle around (x)}φ_(g)}, the output after filtering φ_(g) with the low-pass filter H_(LP) using circular convolution, and then locate the majority pixel in φ_(g) with the highest modified probability (the majority pixel φ_(g)[m, n] such that U[m, n]×CM[m, n]>U[o, p]×CM[o, p] for all 1≦o≦M and 1≦p≦N where φ_(g)[o,p] is also a majority pixel). Replace that pixel, φ_(g)[m, n], with a minority pixel.

Step 3: Given the new minority pixel, φ_(g)[m, n], adjust the probability of each and every majority pixel, φ_(g)[o, p], such that:

(U[o,p])_(new)=(U[o,p])_(old) ×R(r)  (28)

where r is the minimum wrap-around distance from the majority pixel φ_(g)[o,p] to the new minority pixel φ_(g)[m, n] defined for an M×N array as:

 r={square root over (min(|m−o|,M−|m−o|)²+min(|n−p|,N−|n−p|) ²)}  (29)

Step 4: If the ratio of the total number of minority pixels to the total number of pixels in φ_(g) is equal to the desired gray-level g, then quit with the desired dither pattern given by φ_(g); otherwise, return to step 2.

BIPPCCA should be constrained to create a pattern φ_(g) constructed to have as a subset, all constructed patterns φ_(k) for which k<g. φ_(g) must also be a subset of all constructed patterns φ_(l) for which l>g.

The first of these two constraints is satisfied by first initializing φ_(g) to φ_(k) and applying step 3 for each and every minority pixel in φ_(k) probability matrix U of uniformly distributed random numbers. BIPPCCA then continues at step 4. The second constraint is satisfied in step 2 of BIPPCCA when locating the maximum likely majority pixel by considering only those majority pixels in φ_(g) which correspond to minority pixels in the constructed patterns, by for which l>g.

In applying this constrained BIPPCCA to mask design, the patterns composing the set {φ_(g): 0≦g≦1} can be constructed in an order and that order has an impact on the construction of each pattern as φ_(g) is constrained by the constructed pattern corresponding to the maximum gray level which is less than g and constrained by the constructed pattern corresponding to the minimum gray level which is greater than g. As an example, when constructing green-noise masks, use the inter-leaved ordering: $0,1,\frac{1}{4},{1 - \quad \left( \frac{1}{4} \right)},{\frac{1}{4} + \Delta},{1 - \left( {\frac{1}{4} + \Delta} \right)},{\frac{1}{4} + {2\quad \Delta}},{1 - \left( {{\frac{1}{4} + {2\quad \Delta}},\ldots \quad,\frac{1}{2},{\frac{1}{4} - \Delta},{1 - \left( {\frac{1}{4} - \Delta} \right)},{\frac{1}{4} - {2\quad \Delta}},{1 - \left( {\frac{1}{4} - {2\quad \Delta}} \right)},\ldots \quad,\Delta,{1 - \Delta}} \right.}$

where Δ=1/255.

2. Color BIPPCCA

The physical construction of binary dither patterns for the vector green-noise mask is done through Vector Binary Pair Correlation Construction Algorithm (“VBIPPCCA”). In color, a binary dither pattern representing the color g=[g₁, g₂, . . . , g_(C)]^(T) is defined by the set of monochrome images {φ₁,_(g1), φ₂,_(g2), . . . , φ_(C),_(gC)} where φ_(i,gi) is the binary dither pattern corresponding to the i^(th) color with intensity g_(i). VBIPPCCA constructs these monochrome images according to the previous algorithm. However, unlike BIPPCCA, when a minority pixel is added to the i^(th) color, the probabilities corresponding to majority pixels of color j are adjusted according to R_(j,i)(r), the desired pair correlation between minority pixels of color j and i. For each minority cyan pixel added to a CMYK dither pattern, BVIPPCCA uses the user-defined shaping functions R_(c, c)(r), R_(m, c)(r), R_(y, c)(r) and R_(k, c)(r) to adjust the probabilities of majority pixels in the cyan, magenta, yellow and black colors, respectively.

Because stationarity is also a desired property for digital color halftoning, VBIPPCCA applies CM just as in the monochrome case with each color filtered independently of the others. Returning to the CMYK case, this implies that the maximum likely majority pixel of the cyan color is the majority pixel of the cyan color with the highest product U_(c)[m, n]×CM_(c)[m, n], where U_(c)[m, n] is the probability array for cyan pixels, and CM_(c)[m, n] is the concentration matrix formed by applying a user-defined mapping to the concentration of minority cyan pixels.

In summary, the steps for VBIPPCCA as shown in FIG. 15, are performed as follows, where {φ_(i,gi): i=1, 2, . . . , C} is the initial set of empty M×N arrays:

Step 1: Create a set of M×N arrays, {U₁, U₂, . . . , U_(C)}, of uniformly distributed random numbers such that U_(i)[m, n]∈(0, 1) is the probability that φ_(i,gi) will become a minority pixel.

Step 2: For each pattern φ_(i,gi), where the ratio of the total number of minority pixels to the total number of pixels is less than g_(i):

(a) Construct the concentration matrix CM_(i) using a user-defined mapping of {H_(LP) {circle around (x)} φ_(i,gi)}, the output after filtering φ_(i,gi) with the low-pass filter H_(LP) using circular convolution.

(b) Locate the majority pixel in φ_(i,gi) with the highest modified probability (the majority pixel φ_(i,gi)[m, n] such that U_(i)[m, n]×Cm_(i)[m, n]>U_(i)[o, p]×Cm_(i)[o, p] for all 1≦o≦M and 1≦p≦N where φ_(i,gi)[o, p] is also a majority pixel), and replace that pixel, φ_(i,gi)[m, n], with a minority pixel.

(c) Given the new minority pixel, φ_(i,gi)[m, n], adjust the probability of each and every majority pixel, φ_(l,gl)[o, p] for l=1, 2, . . . , C, such that:

(U _(l) [o,p])_(new)=(U _(l) [o,p])_(old) ×R _(l, i)(r)  (30)

where r is the minimum wrap-around distance from the majority pixel φ_(l,gl)[o, p] to the new minority pixel φ_(i,gi)[m, n].

Step 3: If for all colors i, the ratio of the total number of minority pixels to the total number of pixels in φ_(i,gi) is equal to g_(i), the desired intensity of color i, then quit with the desired color dither pattern given by the set {φ_(i,gi): i=1, 2, . . . , C}; otherwise, continue at step 2b.

VBIPPCCA should satisfy the same constraints as BIPPCCA in order to be used for mask construction. The first of these two constraints, φ_(i,gi)⊂φ_(i), _(ki) is satisfied by initializing φ_(i,gi) to φ_(i), _(ki) and applying Step 2(c) for each and every minority pixel in φ_(i), _(ki). VBIPPCCA can then continue to Step 3. The second constraint is satisfied in Step 2(b) of VBIPPCCA when locating the maximum likely majority pixel in color i by considering only those majority pixels in φ_(i,gi) that correspond to minority pixels in the constructed patterns, φ_(i), _(li) for which l>g. Note that with these constraints, patterns of the vector green-noise mask can be constructed in any order, and the order with which patterns of any color i are constructed need not be the same as any other color j.

3. Simulations

FIG. 10 shows a set of pair correlation shaping functions where the function R_(i, i)(r) shapes the pair correlation between pixels of the same color and the function R_(i,j)(r) shapes the pair correlation between pixels of different colors. This set of shaping functions is used to reduce the amount of overlap between pixels of different colors, as shown in FIG. 12(g). Using this same set of shaping functions but with R_(i,j)(r)=1 for all r, patterns with no correlation between channels (see FIG. 12(h)) can be constructed. To create a pattern where the overlapping of pixels of different colors is increased, the function R_(i,j)(r) is set to have the same shape as R_(i, i)(r) (see FIG. 12(i)).

The BIPPCCA-generated patterns shown in FIGS. 12 (g)-12(i), generated by BIPPCCA, were constructed to represent a 91×91 pixel input image of constant color {overscore (x)}[n]=[⅞, ⅞, ⅞, ⅞]^(T) with an average of 5 pixels per cluster (λ_(g)=6.32 pixels). The statistical measures of the spatial relationships between pixels for these three patterns are shown in FIG. 11. The results demonstrate BIPPCCA's ability to capture the same spatial relationships between pixels as those created in FIGS. 12(a)-12(c), via generalized error diffusion. The key is in the shaping functions, and since them the same relationships between minority pixels can be encouraged in the design of green-noise masks.

Mask design can be seen in FIG. 13 (left) where the three design criteria: (1) decreased, (2) uncorrelated, and (3) increased pixel overlap are employed in masks (a), (b) and (c), respectively. Mask (d) is a special mask designed to demonstrate the range of possibilities for dither array generation. In mask (d), the colors cyan and yellow are designed to overlap while not overlapping with black or magenta. These colors black and magenta are uncorrelated with respect to each other. The CMYK-color scales shown in FIG. 13 (right) are given to further illustrate the clustering behavior of each mask. By design, each mask has an average cluster size of 2 pixels at extreme gray levels (g=0, 1) and an average cluster size of 12 pixels at g=½.

The present invention offers two new techniques for superior color reproduction. One need only optimize the parameters of green-noise for specific output devices. The advantage to using green-noise is that it is tunable, allowing for various cluster sizes for various dot-gain characteristics. Previous techniques such as error diffusion with output-dependent feedback and the green-noise mask could only be optimized or tuned within a given channel/color. Now both can consider the interactions of the component colors.

FIG. 14 shows a continuous tone CMYK image of flowers (FIG. 14(a)) with its corresponding halftone reproductions (FIGS. 14(b)-14(h)). The generalized error diffusions scheme give its best reproduction in FIG. 14(d), where the amount of overlap is increased, relative to the uncorrelated overlap of FIG. 14(c) and the decreased overlap of FIG. 14(b). In these three instances, the configurations of parameters (A, B, H and S) are exactly the same as those of Section C.3 and FIG. 7.

In FIGS. 14(e)-14(g), the same comparison of overlap is made using the vector green-noise masks of FIGS. 13(a)-13(c), respectively, where increased overlap gives the best color reproduction. Although these patterns appear “grainy” relative to their error-diffused counterparts, this shortcoming is not a function of masks in general, but rather of the design criteria used in the construction of these specific masks. That is, these masks are composed of clusters which are too large for the quality of printer being used (Tektronix Phaser 440 dye-sublimation), resulting in halftone patterns with visually disturbing artifacts such as the annoying cyan clusters in the predominantly magenta flower pedals.

A mask such as that used in FIG. 14(h) is much better suited to this printer as the spatial relationship between minority pixels is closer to blue-noise. Furthermore, this mask also takes into account the improved color reproduction achieved by increasing the overlap of minority pixels of different colors. As this mask makes good use of the printers ability to print individual pixels, it is a clear example of the tunability of green-noise for color halftoning.

A computing device may be used to perform any of the processes or methods of the present invention previously described. Such a computing device is shown generally as reference numeral 100 in FIG. 16.

Computing device 100 includes a bus 200 interconnecting a processor 202, a read-only memory (ROM) 204, a main memory 206, a storage device 208, an input device 210, an output device 212, and a communication interface 214. Bus 200 is a network topology or circuit arrangement in which all devices are attached to a line directly and all signals pass through each of the devices. Each device has a unique identity and can recognize those signals intended for it. Processor 202 includes the logic circuitry that responds to and processes the basic instructions that drive computing device 100. ROM 204 includes a static memory that stores instructions and date used by processor 202.

Computer storage is the holding of data in an electromagnetic form for access by a computer processor. Main memory 206, which may be a RAM or another type of dynamic memory, makes up the primary storage of computing device 100. Secondary storage of computing device 100 may comprise storage device 208, such as hard disks, tapes, diskettes, Zip drives, RAID systems, holographic storage, optical storage, CD-ROMs, magnetic tapes, and other external devices and their corresponding drives.

Input device 210 may include a keyboard, mouse, pointing device, sound device (e.g. a microphone, etc.), biometric device, or any other device providing input to computing device 100. Output device 212 may comprise a display, a printer, a sound device (e.g. a speaker, etc.), or other device providing output to computing device 100. Communication interface 214 may include network connections, modems, or other devices used for communications with other computer systems or devices, as shown by reference numeral 102.

As described above, a computing device 100 consistent with the present invention may perform any of the methods or processes of the present invention. Computing device 100 performs these tasks in response to processor 202 executing sequences of instructions contained in a computer-readable medium, such as main memory 206. A computer-readable medium may include one or more memory devices and/or carrier waves.

Execution of the sequences of instructions contained in main memory 206 causes processor 202 to perform processes that will be described later. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes consistent with the present invention. Thus, the present invention is not limited to any specific combination of hardware circuitry and software.

Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims. 

What is claimed is:
 1. A method of color printing using green-noise halftoning, the method comprising the step of: extending error diffusion with output-dependent feedback to cluster pixels of like color and to regulate the clustering of pixels of different colors, wherein the halftoning of different colors is correlated such that the superimposing of different inks is increased or decreased, offering greater control of resulting halftone patterns.
 2. A method of color printing using green-noise halftoning, the method comprising the step of: incorporating a desired correlation between colors to construct a vector green-noise mask, wherein the mask maintains all the desirable attributes of a monochrome mask, including isotropic and tunable coarseness, while regulating the overlapping of pixels of different colors.
 3. A method of color printing, using green-noise halftoning, comprising the step of: extending error diffusion to regulate the overlapping of different colored pixels, wherein the halftoning of different colors is correlated such that the superimposing of different inks is increased or decreased, offering greater control of the resulting halftone pattern.
 4. A method of color printing, where {φ_(i,gi): i=1, 2, . . . , C} is an initial set of empty M×N arrays, and C, M and N are integers, the method comprising the steps of: creating a set of M×N arrays, {U₁, U₂, . . . , U_(C)}, of uniformly distributed random numbers such that U_(i)[m, n]∈(0, 1) is the probability that φ_(i,gi) will become a minority pixel; for each pattern φ_(i,gi), where the ratio of the total number of minority pixels to the total number of pixels is less than a gray level g_(i), performing the following substeps: constructing a concentration matrix CM_(i) using a user-defined mapping of, {H_(LP){circle around (x)}φ_(i,gi)}, the output after filtering φ_(i,gi) with the low-pass filter H_(LP) using circular convolution, locating a majority pixel in φ_(i,gi) with a highest modified probability, and replacing that pixel, φ_(i,gi)[m, n], with a minority pixel, wherein the majority pixel with the highest modified probability is a majority pixel φ_(g)[m, n] such that U[m, n]×CM[m, n]>U[o, p]×CM[o, p] for all 1≦o≦M and 1≦p≦N where φ_(g)[o, p] is also a majority pixel, and given the new minority pixel, φ_(i,gi)[m, n], adjusting the probability of each and every majority pixel, φ_(l,gl)[o, p] for l=1, 2, . . . , C, such that: (U _(l) [o, p])_(new)=(U _(l) [o, p])_(old) ×R _(l, i)(r) where r is the minimum wrap-around distance from the majority pixel φ_(l,gl) [o, p] to the new minority pixel φ_(i,gi) [m, n]; and obtaining the desired color dither pattern given by the set {φ_(i,gi): i=1, 2, . . . , C} if for all colors i, the ratio of the total number of minority pixels to the total number of pixels in φ_(i,gi) is equal to g_(i), otherwise, returning to the locating substep.
 5. An apparatus for color printing using green-noise halftoning, comprising: storage means for storing data on a storage medium; and a computer processor means for processing data from the storage means, and for extending error diffusion with output-dependent feedback to cluster pixels of like color and to regulate the clustering of pixels of different colors, wherein the halftoning of different colors is correlated such that the superimposing of different inks is increased or decreased, offering greater control of resulting halftone patterns.
 6. An apparatus for color printing using green-noise halftoning, comprising: storage means for storing data on a storage medium; and a computer processor means for processing data from the storage means, and for incorporating a desired correlation between colors to construct a vector green-noise mask, wherein the mask maintains all the desirable attributes of a monochrome mask, including isotropic and tunable coarseness, while regulating the overlapping of pixels of different colors.
 7. An apparatus for color printing using green-noise halftoning, comprising: storage means for storing data on a storage medium; and a computer processor means for processing data from the storage means, and for extending error diffusion to regulate the overlapping of different colored pixels, wherein the halftoning of different colors is correlated such that the superimposing of different inks is increased or decreased, offering greater control of the resulting halftone pattern.
 8. An apparatus for color printing, where {φ_(i,gi): i=1, 2, . . . , C} is an initial set of empty M×N arrays, and C, M and N are integers, comprising: storage means for storing data on a storage medium; and a computer processor means for processing data from the storage means, the processor means performing the following the steps: creating a set of M×N arrays, {U₁, U₂, . . . , U_(C)}, of uniformly distributed random numbers such that U_(i)[m, n]∈(0, 1) is the probability that φ_(i,gi) will become a minority pixel; for each pattern φ_(i,gi), where the ratio of the total number of minority pixels to the total number of pixels is less than a gray level g_(i), performing the following substeps: constructing a concentration matrix CM_(i) using a user-defined mapping of, {H_(LP){circle around (x)}φ_(i,gi)}, the output after filtering φ_(i,gi) with the low-pass filter H_(LP) using circular convolution, locating a majority pixel in φ_(i,gi) with a highest modified probability, and replacing that pixel, φ_(i,gi)[m, n], with a minority pixel, wherein the majority pixel with the highest modified probability is a majority pixel φ_(g)[m, n] such that U[m, n]×CM[m, n]>U[o, p]×CM[o, p] for all 1≦o≦M and 1≦p≦N where φ_(g)[o, p] is also a majority pixel, and given the new minority pixel, φ_(i,gi)[m, n], adjusting the probability of each and every majority pixel, φ_(l,gl)[o, p] for l=1, 2, . . . , C, such that: (U _(l) [o, p])_(new)=(U _(l) [o, p])_(old) ×R _(l, i)(r) where r is the minimum wrap-around distance from the majority pixel φ_(l,gl)[o, p] to the new minority pixel φ_(i,gi)[m, n]; and obtaining the desired color dither pattern given by the set {φ_(i,gi): i=1, 2, . . . , C} if for all colors i, the ratio of the total number of minority pixels to the total number of pixels in φ_(i,gi) is equal to g_(i), otherwise, returning to the locating substep. 